/**
 * Router 详细定义说明:
 *  下面是路由的完整定义, 参数可以根据场景的不同, 自由选择:
 *    router.verb('path-match', app.controller.action);
 *    router.verb('router-name', 'path-match', app.controller.action);
 *    router.verb("path-match", middleware1, ..., midlewareN, app.controller.action);
 *    router.verb("router-name", "path-match", middleware1, ...,middlewareN, app.controller.action);
 */
module.exports = app => {
  const { router, controller } = app;
  // console.log(controller)
  router.get('index', '/home/index', controller.home.index);
  router.get('/nav/:id', controller.home.nav);
  router.get('/news', controller.news.list);

  const gzip = app.middleware.gzip({threshold: 1024}, app);
  router.get('/gzip', gzip, controller.home.index);

  // Controller支持子目录. 在定义路由的时候, 可以通过${directoryName}.${fileName}.${functionName}的方式制定对应的Controller.
  router.get('/api/v1/comments/:comment', controller.api.v1.comments.create)

  // RESTful风格的URL 定义
  // app.resources('routerName', 'pathMatch', controller)

  // router.resources('posts', '/api/posts', controller.posts);
  // console.log(controller.posts)
  router.resources('posts', '/api/posts', controller.posts);

  // Query String
  // curl http://127.0.0.1:7001/search?name=egg
  router.get("/search", controller.search.index)

  // 参数命名方式
  // curl http://127.0.0.1:7001/user/123/xiaoming
  router.get("/user/:id/:name", controller.user.index);

  // 复杂参数获取
  // 路由里也支持定义正则. 可以更加灵活的获取参数.
  router.get(/^\/package\/([\w-.]+(\/[\w-.]+)?)$/, controller.user.regexp)

  // 表单内容获取
  //// 模拟发起 post 请求。
  // curl -X POST http://127.0.0.1:7001/form --data '{"name":"controller"}' --header 'Content-Type:application/json'
  router.post("/form", controller.user.create)

  // 重定向
  // 内部重定向
  router.redirect("/", '/home/index', 302)
  // 外部重定向
   // ctx.redirect   => controller.search

   // 中间件使用。 使用可配置中间件的路由配置
   router.get("/search-c", app.middleware.uppercase() ,  controller.search.index)

  /*
    太多路由？
    // app.router.js
      module.exports = app => {}
    
    // app/router/news.js
    module.exports = app => {}

    // app/ruter/admin.js
    module.exports = app => {}

    或者使用[egg-router-plus](https://github.com/eggjs/egg-router-plus)
  */

  router.post("/upload", controller.uploader.upload);

  router.get('/cookie', controller.cookie.add)
  router.get('/cookie-r', controller.cookie.remove)
};